%Configuracion del documento

%Tamaño de letra principal:
\documentclass[11pt]{article}

%Título y autor(es):
\title{Título del TP}
\author{Sergio}

%Tamaño de página y los márgenes:
\usepackage[a4paper,headheight=16pt]{geometry}
\textwidth      =  450pt     %Ancho del cuerpo
\textheight     =  648pt     %Largo del cuerpo
\topmargin      =  0pt       %Agrega espacio en el margen superior
\oddsidemargin  =  0pt       %+ margen izquierdo en paginas impares
\evensidemargin =  0pt       %+ margen derecho en paginas impares

% Vamos a escribir en castellano:
\usepackage[spanish]{babel}

% Vinculos
\usepackage{color,hyperref}
\definecolor{black}{rgb}{0.0,0.0,0.0}
\definecolor{darkblue}{rgb}{0.0,0.0,0.3}
\hypersetup{colorlinks,breaklinks,
            linkcolor=black,urlcolor=darkblue,
            anchorcolor=darkblue,citecolor=darkblue}

%instalar texlive-lang-spanish
% Reconocer acentos y caracteres no ingleses:
\usepackage[utf8]{inputenc}

% Cabecera y pie de página personalizadas
\usepackage{fancyhdr}
\pagestyle{fancy}

% Hago que en la cabecera de página se muestre a la derecha la sección,
% y en el pie, en número de página a la derecha:
\renewcommand{\sectionmark}[1]{\markboth{}{\thesection\ \ #1}}
\lhead{}
\chead{}
\rhead{\rightmark}
\lfoot{}
\cfoot{}
\rfoot{\thepage}

%numeracion especial para tablas, figuras y ecuaciones
\usepackage{amsmath}
\numberwithin{equation}{section}
\numberwithin{figure}{section}
\numberwithin{table}{section}

%Agregar notas al pie en tablas:
\usepackage{threeparttable}

%Incluir Graficos
\usepackage{graphicx}

%Imágenes no flotantes, se colocan donde les decís que aparezcan cambiando [h] por [H]
\usepackage{float}

%Usar subfiguras: (al estilo Figura 2.3(b) )
\usepackage{subfigure}

% Para esto es necesario texlive-latex-recommended o texlive-latex-extra
%Numero de figuras en negrita
\usepackage[hang,bf]{caption}

% Todas las imágenes están en el directorio tp-img:
\newcommand{\imgdir}{tp-img}
\graphicspath{{\imgdir/}}

% uso de colores
\usepackage{color}
\definecolor{gray}{rgb}{0.9,0.9,0.9}

%Para embeber código de lenguajes como Matlab, C, html, etc.
\usepackage{float}
\usepackage{listings}
\lstset{ frame=Ltb, 
	framerule=0pt, 
	aboveskip=0.5cm, 
	framextopmargin=1pt, 
	framexbottommargin=1pt, 
	framexleftmargin=0 cm, 
	framesep=0pt, rulesep=.3pt, 
	backgroundcolor=\color{gray}, 
	rulesepcolor=\color{black}, 
	showstringspaces = false, 
	basicstyle=\small\ttfamily, 
	commentstyle=\color{gray}, 
	keywordstyle=\bfseries
	}

	%rulesepcolor=\color{black},
	%stringstyle=\ttfamily,
	%showstringspaces = false,
	%basicstyle=\small\ttfamily,
	%commentstyle=\color{gray},
	%keywordstyle=\bfseries,

	%numbers=left,
	%numbersep=15pt,
	%numberstyle=\tiny,
	%numberfirstline = false,
	%breaklines=true

%Para colocar hipervinculos
%\usepackage[dvipdfm,colorlinks=true,linkcolor=black,urlcolor=blue]{hyperref}
%Para hacer matrices y digramas de flujo sencillos

%\usepackage[all]{xy}

%INICIO DEL DOCUMENTO

\begin{document}

\begin{titlepage}

% Sin cabecera ni pie de página:
\thispagestyle{empty}

% Logo de la facu: 
\begin{center}
	\includegraphics[width=8cm]{logo-facu}
\end{center}
\vfill

% Título:
\begin{center}
	\Huge{Criptografía y Seguridad Informática}\\
	\Huge{Túnel IPSec con Certificados}\\
\end{center}

\vspace{1cm}

\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{./tp-img/caratula.png}
\end{figure}

\vspace{1cm}

% Integrantes:
\large{
	\begin{tabbing}
		Sergio Hinojosa \hspace{1cm} \\84476 \\
		shinojosa@fi.uba.ar\\
		\\
		Federico Camarda \hspace{1cm} \\87322 \\
		fededamian@gmail.com\\
	\end{tabbing}
}
\vfill

% Fecha o cuatrimestre:
\flushright{2011}
\end{titlepage}

% Hago que las páginas se comiencen a contar a partir de aquí:
\setcounter{page}{1}

%INDICE
%-------------------------------------------------------------------------------
% Pongo el índice en una página aparte:
\tableofcontents
\newpage
%-------------------------------------------------------------------------------

% Inicio del TP:
\section{Creación de la Autoridad Certificante}

Utilizando la misma configuración de máquinas virtuales, desarrollada en el trabajo anterior, se inició la máquina virtual R1 utilizando la distribución de Linux de la cáterdra.

Se accedió al sistema como root utilizando el comando su:

\begin{verbatim}
	# su
\end{verbatim}

Posteriormente se accedió al directorio de trabajo a partir del comando:

\begin{verbatim}
	# cd /crypto/ipsec-CA
\end{verbatim}

Se editó el archivo ``/crypto/conf/config.sh'' haciendo uso del editor vim para configurar todos los parámetros requeridos. El resultado fué el siguiente:

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.6]{./tp-img/1-3-config.png}
	\caption{Edición en el archivo de configuración}
\end{figure}

\newpage

Finalmente, se generó la autoridad certificante ejecutando el script ``s01-generarCA.sh", del cual se obtuvo la siguiente respuesta:

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.6]{./tp-img/1-4-generar_CA.PNG}
	\caption{Generación de la CA}
\end{figure}

\newpage

\section{Generación de solicitudes de certificados para R1 y R2}

El siguiente paso fue la generación de solicitudes para los certificados de cada equipo. Se ejecutó el script ``s02-generaSolicitudes.sh'' y se completaron los datos requeridos para cada equipo. Se muestra en las siguientes capturas los campos completados.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/2-1-gen_cert_R1.PNG}
	\caption{Generación de solicitudes}
\end{figure}

Una vez creadas las solicitudes de certificados, se procede a la firma de los mismos ejecutando el script "s03-firmaSolicitudes.sh".

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/2-2a-firmas.PNG}
	\caption{Firma de Solicitudes}
\end{figure}

Con el objeto de verificar que la copia se haya efectuado se analiza el contenido de los directorios:

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/2-2b-certs.PNG}
	\caption{Verificación de contenido}
\end{figure}

A continuación se inicializa la Certificat Revokation List vacía, con lo cual no habrán certificados revocados.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/2-3-CRL.PNG}
	\caption{Certificat Revokation List}
\end{figure}

Posteriormente, se obtiene la información de los dueños de los certificados.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/2-4-getID.PNG}
	\caption{Verificación de contenido}
\end{figure}

\newpage

\section{Configuración de túnel IPSec}

\subsection{Configuración de R1}

El primer paso es la configuración de red del equipo R1, en el cual reside la CA.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.5]{./tp-img/3-1-config.PNG}
	\caption{Red en R1}
\end{figure}

Una vez llevada a cabo la configuración de networking, se copian los certificados para el programa freesWan.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.5]{./tp-img/3-2-installCert.PNG}
	\caption{Red en R1}
\end{figure}

\newpage

Posteriormente se prepara el archivo requerido por el equipo dos ejecutando el script que sigue:

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/3-3-prepara.PNG}
	\caption{Preparación de Archivo}
\end{figure}

\subsection{Configuración de R2}

Se lleva a cabo la configuración de networking esta vez en R2

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/3-4-configRem.PNG}
	\caption{Red en R2}
\end{figure}

\newpage

Se copian los certificados desde la CA con secure copy utilizando la clave conocida.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/3-5-copiaCert.PNG}
	\caption{Copia de Certificados}
\end{figure}

\subsection{Generación de ipsec.conf en R1 y en R2:}

Se configura IPSec en ambos equipos:

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/3-6-configIPSEC.PNG}
	\caption{Copia de Certificados}
\end{figure}

\newpage

Luego se genera el archivo IPSec secrets en cada uno de los routers.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/3-7-IPSEC-SEC.PNG}
	\caption{Archivo IPSec-SEC}
\end{figure}

Habiendo completado todos los pasos anteriores, se lleva a cabo a continuación el inicio del túnel.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/3-8-IPSEC-StartService.PNG}
	\caption{Inicio existoso de la conexión}
\end{figure}

\newpage

\section{Revocación de Certificados}

Una vez verificada la conexión IPSec a través de certificados, se desea observar el comportamiento al querer iniciar una conexión con un certificado revocado.

Para ello, se ejecuta el script "srs0-revocarR1.sh", el cual revoca el certificado y actualiza la CRL.

Una vez efectuado este paso, se actualizó la CRL en el equipo R2 y se reinicio el servicio IPSec. Se obtuvo el siguiente resultado:

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.40]{./tp-img/4-2-Revocacion.PNG}
	\caption{Inicio denegado de la conexión}
\end{figure}

Se puede observar que se obtuvo el mensaje ``INVALID\_ KEY\_ INFORMATION'' con lo cual no se pudo iniciar el enlace IPSec como era esperado.

Una vez finalizada la prueba se restauró la conexión generando un nuevo certificado en el equipo 1.

\newpage

\section{Debug}

Para verificar el envío de certificados, se utilizó el script debug.sh y se obtuvo la salida del archivo de log ubicado en /var/log/auth.log.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.40]{./tp-img/auth.PNG}
	\caption{Log de Envío de Certificados}
\end{figure}

\newpage

\section{Apache Web Server Seguro}

Una vez finalizada la utilización de certificados para enlaces IPSec se procedió a analizar su uso en servidores Web. Para esto, se ejecutaron cada uno de los scripts para lograr la generación y firma de certificados, y la configuración y puesta en marcha del web server Apache.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.40]{./tp-img/5-1-ApacheScripts.PNG}
	\caption{Ejecución de Scripts de Configuración}
\end{figure}

Una vez ejecutados todos los scripts, se procedió a intentar levantar el sitio en el navegador Iceweasel. Se obtuvo lo siguiente:

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.35]{./tp-img/5-2-WebServer.PNG}
	\caption{Apertura del sitio, conexión SSL}
\end{figure}

Se puede observar un mensaje de advertencia. El navegador no pudo verificar la identidad del servidor. Nos menciona que esto se puede dar por varios motivos, tales como autoridad certificante desconocida, fechas de certificado expiradas, hostname incorrecto y otras. La solución a este mensaje es aceptar manualmente la conexión sabiendo las consecuencias. Sabemos que esto iba a suceder debido a que el certificado fué generado por el grupo de trabajo y no fue emitido por una autoridad certificante reconocida como pueden ser VeriSign, DigiSign o GeoTrust.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/5-3-Certificado.PNG}
	\caption{Datos de nuestro Certificado}
\end{figure}

Finalmente al aceptar el certificado inválido, se puede observar el sitio a través de la conexión SSL insegura establecida.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.45]{./tp-img/5-4-Site.PNG}
	\caption{}
\end{figure}

\newpage

\section{Conclusiones}

Consideramos que el Trabajo Práctico realizado fue una buena forma de afianzar conocimientos sobre certificados que habíamos visto de forma teórica. Si bien los mismos aparecen día a día al navegar en internet, y al establecer conexiones VPN en el mundo corporativo, en esta ocasión se hizo un análisis con mayor detalle sobre los pasos que se llevan a cabo desde la generación de los mismos hasta la validación efectuada por un Browser o un Router.

\end{document}
